﻿using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using System.Web.Configuration;

namespace Crm.Web
{
    public class CrmService : ICrmService
    {
        Parametre prm = null;

        public void GorusmelerEkle(Hareket grs, List<Katilimci> katilimcilar)
        {
            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Local))
            {
                prm = new Parametre();
                SqlParameter[] p = prm.ToArray(grs);
                Helper.ExecuteNonQuery("if exists(select * from Gorusmeler Where ID = @ID) Update Gorusmeler Set HareketTip = @HareketTip, FirmaTip = @FirmaTip, Oncelik = @Oncelik, AdresID = @AdresID, BaslangicTarihi = @BaslangicTarihi, BitisTarihi = @BitisTarihi, Yer = @Yer, Konu = @Konu, Detay = @Detay, KayitTarihi = @KayitTarihi, EkleyenKullanici = @EkleyenKullanici, GuncelleyenKullanici = @GuncelleyenKullanici, GuncellemeTarihi = @GuncellemeTarihi, FirmaDurumID = @FirmaDurumID, KapamaNedeniID = @KapamaNedeniID, Notlar = @Notlar,Yetkili=@Yetkili,GorusmeTipID=@GorusmeTipID,FirmaKodu=@FirmaKodu,FirmaUnvani=@FirmaUnvani Where ID = @ID Else Insert into Gorusmeler (HareketTip,FirmaTip,FirmaID,Oncelik,AdresID,BaslangicTarihi,BitisTarihi,Yer,Konu,Detay,KayitTarihi,EkleyenKullanici,GuncelleyenKullanici,GuncellemeTarihi,FirmaDurumID,KapamaNedeniID,Notlar,Yetkili,GorusmeTipID,FirmaKodu,FirmaUnvani) values(@HareketTip, @FirmaTip, @FirmaID, @Oncelik, @AdresID, @BaslangicTarihi, @BitisTarihi, @Yer, @Konu, @Detay, @KayitTarihi, @EkleyenKullanici, @GuncelleyenKullanici, @GuncellemeTarihi, @FirmaDurumID, @KapamaNedeniID, @Notlar,@Yetkili,@GorusmeTipID,@FirmaKodu,@FirmaUnvani)", p);
            }
        }

        public void KatilimciEkle(Katilimci katilimci)
        {
            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Local))
            {
                prm = new Parametre();
                SqlParameter[] p = prm.ToArray(katilimci);
                Helper.ExecuteNonQuery("if exists(select * from Katilimcilar Where ID = @ID) Update Katilimcilar Set Tip = @Tip, HareketID = @HareketID, Adi = @Adi, Soyadi = @Soyadi, Telefon = @Telefon, Email = @Email Where ID = @ID Else Insert into Katilimcilar (Tip,HareketID,Adi,Soyadi,Telefon,Email) values(@Tip,@HareketID,@Adi,@Soyadi,@Telefon,@Email)", p);
            }
        }

        public void KullaniciEkle(Kullanici kullanici)
        {
            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Local))
            {
                prm = new Parametre();
                SqlParameter[] p = prm.ToArray(kullanici);
                Helper.ExecuteNonQuery("if exists(select * from Kullanicilar Where ID = @ID) Update Kullanicilar Set Tip = @Tip, Adi = @Adi, Sifresi = @Sifresi, Email = @Email Where ID = @ID Else Insert into Kullanicilar (Tip,Adi,Sifresi,Email) values (@Tip,@Adi,@Sifresi,@Email)", p);
            }
        }

        public void KullaniciYetkiEkle(KullaniciYetki kullaniciYetki)
        {
            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Local))
            {
                prm = new Parametre();
                SqlParameter[] p = prm.ToArray(kullaniciYetki);
                Helper.ExecuteNonQuery("if exists(select * from KullaniciYetkileri Where ID = @ID) Update KullaniciYetkileri Set KullaniciID = @KullaniciID, Parametre = @Parametre, Deger = @Deger Where ID = @ID Else Insert into KullaniciYetkileri (KullaniciID,Parametre,Deger) values (@KullaniciID,@Parametre,@Deger)", p);
            }
        }

        public void TanimEkle(GenelTanim tanim)
        {
            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Local))
            {
                prm = new Parametre();
                SqlParameter[] p = prm.ToArray(tanim);
                Helper.ExecuteNonQuery("if exists(select * from Tanimlar Where ID = @ID) Update Tanimlar Set Adi = @Adi, Tip = @Tip,Deger=@Deger Where ID = @ID Else Insert into Tanimlar (Adi,Tip,Deger) values (@Adi,@Tip,@Deger)", p);
            }
        }

        public void GorusmelerSil(Hareket grs)
        {
            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Local))
            {
                prm = new Parametre();
                prm.Ekle("ID", System.Data.SqlDbType.Int, grs.ID);
                Helper.ExecuteNonQuery("Delete from Gorusmeler Where ID = @ID", prm.ToArray());
            }
        }

        public void KatilimciSil(Katilimci katilimci)
        {
            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Local))
            {
                prm = new Parametre();
                prm.Ekle("ID", System.Data.SqlDbType.Int, katilimci.ID);
                Helper.ExecuteNonQuery("Delete from Katilimcilar Where ID = @ID", prm.ToArray());
            }
        }

        public void KullaniciSil(Kullanici kullanici)
        {
            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Local))
            {
                prm = new Parametre();
                prm.Ekle("ID", System.Data.SqlDbType.Int, kullanici.ID);
                Helper.ExecuteNonQuery("Delete from Kullanicilar Where ID = @ID", prm.ToArray());
            }
        }

        public void KullaniciYetkiSil(KullaniciYetki kullaniciYetki)
        {
            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Local))
            {
                prm = new Parametre();
                prm.Ekle("ID", System.Data.SqlDbType.Int, kullaniciYetki.ID);
                Helper.ExecuteNonQuery("Delete from KullaniciYetki Where ID = @ID", prm.ToArray());
            }
        }

        public void TanimSil(GenelTanim tanim)
        {
            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Local))
            {
                prm = new Parametre();
                prm.Ekle("ID", System.Data.SqlDbType.Int, tanim.ID);
                Helper.ExecuteNonQuery("Delete from Tanimlar Where ID = @ID", prm.ToArray());
            }
        }

        public List<Hareket> GorusmelerListele()
        {
            return GorusmeRandevular(0);
        }

        public List<Hareket> RandevuListele()
        {
            return GorusmeRandevular(1);
        }

        private List<Hareket> GorusmeRandevular(byte tip)
        {
            List<Hareket> lst = new List<Hareket>();
            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Local))
            {
                SqlDataReader dr = Helper.ExecuteReader("Select *,isnull((SELECT TOP 1 Adi FROM            Tanimlar WHERE        (Tip = 8) AND (ID = Gorusmeler.FirmaTip)),'') as tip from Gorusmeler where HareketTip=@tip", new SqlParameter("@tip", System.Data.SqlDbType.TinyInt) { Value = tip });
                while (dr.Read())
                {
                    lst.Add(new Hareket { AdresID = (int)dr["AdresID"], BaslangicTarihi = (DateTime)dr["BaslangicTarihi"], BitisTarihi = (DateTime)dr["BitisTarihi"], Detay = dr["Detay"].ToString(), EkleyenKullanici = (int)dr["EkleyenKullanici"], FirmaDurumID = (int)dr["FirmaDurumID"], FirmaID = (int)dr["FirmaID"], FirmaTip = (int)dr["FirmaTip"], GuncellemeTarihi = (DateTime)dr["GuncellemeTarihi"], GuncelleyenKullanici = (int)dr["GuncelleyenKullanici"], HareketTip = (byte)dr["HareketTip"], ID = (int)dr["ID"], KapamaNedeniID = (int)dr["KapamaNedeniID"], KayitTarihi = (DateTime)dr["KayitTarihi"], Konu = (string)dr["Konu"], Notlar = (string)dr["Notlar"], Oncelik = (byte)dr["Oncelik"], Yer = (string)dr["Yer"], FirmaTipAdi = dr["tip"].ToString(), Yetkili = dr["Yetkili"].ToString(), GorusmeTipID = (int)dr["GorusmeTipID"], FirmaKodu = dr["FirmaKodu"].ToString(), FirmaUnvani = dr["FirmaUnvani"].ToString() });
                }
                dr.Close();
            }
            return lst;
        }

        public List<Katilimci> KatilimciListele()
        {
            List<Katilimci> lst = new List<Katilimci>();
            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Local))
            {
                SqlDataReader dr = Helper.ExecuteReader("Select * from Katilimcilar", null);
                while (dr.Read())
                {
                    lst.Add(new Katilimci { Adi = (string)dr["Adi"], Email = (string)dr["Email"], HareketTip = (int)dr["HareketTip"], ID = (int)dr["ID"], Soyadi = dr["Soyadi"].ToString(), Telefon = (string)dr["Telefon"] });
                }
                dr.Close();
            }
            return lst;
        }

        public List<Kullanici> KullaniciListele()
        {
            List<Kullanici> lst = new List<Kullanici>();
            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Local))
            {
                SqlDataReader dr = Helper.ExecuteReader("Select * from Kullanicilar", null);
                while (dr.Read())
                {
                    lst.Add(new Kullanici { Adi = (string)dr["Adi"], Email = (string)dr["Email"], ID = (int)dr["ID"], Sifresi = (string)dr["Sifresi"], Tip = (byte)dr["Tip"] });
                }
                dr.Close();
            }
            return lst;
        }

        public List<KullaniciYetki> KullaniciYetkiListele(int kullaniciID)
        {
            List<KullaniciYetki> lst = new List<KullaniciYetki>();
            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Local))
            {
                SqlDataReader dr = Helper.ExecuteReader("Select * from KullaniciYetkileri where KullaniciID=@id", new SqlParameter("@id", System.Data.SqlDbType.Int) { Value = kullaniciID });
                while (dr.Read())
                {
                    lst.Add(new KullaniciYetki { Deger = (string)dr["Deger"], ID = (int)dr["ID"], KullaniciID = (int)dr["KullaniciID"], Parametre = (string)dr["Parametre"] });
                }
                dr.Close();
            }
            return lst;
        }

        public List<GenelTanim> TanimListele(byte tip)
        {
            List<GenelTanim> lst = new List<GenelTanim>();
            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Local))
            {
                SqlDataReader dr = Helper.ExecuteReader("Select * from Tanimlar where Tip=@Tip", new SqlParameter("@Tip", System.Data.SqlDbType.TinyInt) { Value = tip });
                while (dr.Read())
                {
                    lst.Add(new GenelTanim { Adi = (string)dr["Adi"], ID = (int)dr["ID"], Tip = (byte)dr["Tip"], Deger = dr["Deger"].ToString() });
                }
                dr.Close();
            }
            return lst;
        }

        public Hareket GorusmelerBul(int ID)
        {
            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Local))
            {
                prm = new Parametre();
                prm.Ekle("ID", System.Data.SqlDbType.Int, ID);
                SqlDataReader dr = Helper.ExecuteReader("Select * from Gorusmeler Where ID = @ID", prm.ToArray());
                dr.Close();

                return new Hareket { AdresID = (int)dr["AdresID"], BaslangicTarihi = (DateTime)dr["BaslangicTarihi"], BitisTarihi = (DateTime)dr["BitisTarihi"], Detay = dr["Detay"].ToString(), EkleyenKullanici = (int)dr["EkleyenKullanici"], FirmaDurumID = (int)dr["FirmaDurumID"], FirmaID = (int)dr["FirmaID"], FirmaTip = (byte)dr["FirmaTip"], GuncellemeTarihi = (DateTime)dr["GuncellemeTarihi"], GuncelleyenKullanici = (int)dr["GuncelleyenKullanici"], HareketTip = (byte)dr["HareketTip"], ID = (int)dr["ID"], KapamaNedeniID = (int)dr["KapamaNedeniID"], KayitTarihi = (DateTime)dr["KayitTarihi"], Konu = (string)dr["Konu"], Notlar = (string)dr["Notlar"], Oncelik = (byte)dr["Oncelik"], Yer = (string)dr["Yer"], Yetkili = dr["Yetkili"].ToString(), GorusmeTipID = (int)dr["GorusmeTipID"] };
            }
        }

        public Katilimci KatilimciBul(int ID)
        {
            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Local))
            {
                prm = new Parametre();
                prm.Ekle("ID", System.Data.SqlDbType.Int, ID);
                SqlDataReader dr = Helper.ExecuteReader("Select * from Katilimcilar Where ID = @ID", prm.ToArray());
                dr.Close();
                return new Katilimci { Adi = (string)dr["Adi"], Email = (string)dr["Email"], HareketTip = (int)dr["HareketTip"], ID = (int)dr["ID"], Soyadi = dr["Soyadi"].ToString(), Telefon = (string)dr["Telefon"] };
            }
        }

        public Kullanici KullaniciBul(int ID)
        {
            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Local))
            {
                prm = new Parametre();
                prm.Ekle("ID", System.Data.SqlDbType.Int, ID);
                SqlDataReader dr = Helper.ExecuteReader("Select * from Kullanicilar Where ID = @ID", prm.ToArray());
                dr.Close();
                return new Kullanici { Adi = (string)dr["Adi"], Email = (string)dr["Email"], ID = (int)dr["ID"], Sifresi = (string)dr["Sifresi"], Tip = (byte)dr["Tip"] };
            }
        }

        public Kullanici KullaniciGiris(string userName, string password)
        {
            Kullanici usr = null;
            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Local))
            {
                prm = new Parametre();
                prm.Ekle("Adi", System.Data.SqlDbType.VarChar, userName);
                prm.Ekle("Sifresi", System.Data.SqlDbType.VarChar, password);
                SqlDataReader dr = Helper.ExecuteReader("Select * from Kullanicilar Where Adi = @Adi and Sifresi=@Sifresi", prm.ToArray());
                if (dr.HasRows)
                {
                    dr.Read();
                    usr = new Kullanici { Adi = (string)dr["Adi"], Email = (string)dr["Email"], ID = (int)dr["ID"], Sifresi = (string)dr["Sifresi"], Tip = (byte)dr["Tip"] };
                    dr.Close();
                }
            }
            return usr;
        }

        public KullaniciYetki KullaniciYetkiBul(int ID)
        {
            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Local))
            {
                prm = new Parametre();
                prm.Ekle("ID", System.Data.SqlDbType.Int, ID);
                SqlDataReader dr = Helper.ExecuteReader("Select * from KullaniciYetki Where ID = @ID", prm.ToArray());
                dr.Close();

                return new KullaniciYetki { Deger = (string)dr["Deger"], ID = (int)dr["ID"], KullaniciID = (int)dr["KullaniciID"], Parametre = (string)dr["Parametre"] };
            }
        }

        public GenelTanim TanimBul(int ID)
        {
            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Local))
            {
                prm = new Parametre();
                prm.Ekle("ID", System.Data.SqlDbType.Int, ID);
                SqlDataReader dr = Helper.ExecuteReader("Select * from Tanimlar Where ID = @ID", prm.ToArray());
                dr.Close();
                return new GenelTanim { Adi = (string)dr["Adi"], ID = (int)dr["ID"], Tip = (byte)dr["Tip"], Deger = dr["Deger"].ToString() };
            }
        }

        public List<Hesap> FirmaListesi(string filtre, bool kod, byte tip)
        {
            List<Hesap> lst = new List<Hesap>();
            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Mikro))
            {
                SqlDataReader dr = null;
                switch (tip)
                {
                    case 0: //cari
                        if (kod)
                        {
                            dr = Helper.ExecuteReader("SELECT        cari_RECno AS ID, cari_kod AS Kodu, cari_unvan1 + ' ' + cari_unvan2 AS Adi,0 as tip FROM            CARI_HESAPLAR WHERE        (cari_kod like @filtre)", new SqlParameter("@filtre", System.Data.SqlDbType.VarChar, 25) { Value = filtre });
                        }
                        else
                        {
                            dr = Helper.ExecuteReader("SELECT        cari_RECno AS ID, cari_kod AS Kodu, cari_unvan1 + ' ' + cari_unvan2 AS Adi,0 as tip FROM            CARI_HESAPLAR WHERE        (cari_unvan1 like @filtre)", new SqlParameter("@filtre", System.Data.SqlDbType.VarChar, 25) { Value = filtre });
                        }
                        break;
                    case 1://aday cari
                        if (kod)
                        {
                            dr = Helper.ExecuteReader("SELECT        adaycr_RECno AS id, adaycr_kod AS kod, adaycr_unvan1 + ' ' + adaycr_unvan2 AS unvan,2 as tip FROM            ADAY_CARI_HESAPLAR WHERE        (adaycr_kod like @filtre)", new SqlParameter("@filtre", System.Data.SqlDbType.VarChar, 25) { Value = filtre });
                        }
                        else
                        {
                            dr = Helper.ExecuteReader("SELECT        adaycr_RECno AS id, adaycr_kod AS kod, adaycr_unvan1 + ' ' + adaycr_unvan2 AS unvan,2 as tip FROM            ADAY_CARI_HESAPLAR WHERE        (adaycr_unvan1 like @filtre)", new SqlParameter("@filtre", System.Data.SqlDbType.VarChar, 25) { Value = filtre });
                        }
                        break;
                    case 2: //aday ve normal cari
                        if (kod)
                        {
                            dr = Helper.ExecuteReader("SELECT        cari_RECno AS ID, cari_kod AS Kodu, cari_unvan1 + ' ' + cari_unvan2 AS Adi,0 as tip FROM            CARI_HESAPLAR WHERE        (cari_kod like @filtre) union all SELECT        adaycr_RECno AS id, adaycr_kod AS kod, adaycr_unvan1 + ' ' + adaycr_unvan2 AS unvan,2 as tip FROM            ADAY_CARI_HESAPLAR WHERE        (adaycr_kod like @filtre)", new SqlParameter("@filtre", System.Data.SqlDbType.VarChar, 25) { Value = filtre });
                        }
                        else
                        {
                            dr = Helper.ExecuteReader("SELECT        cari_RECno AS ID, cari_kod AS Kodu, cari_unvan1 + ' ' + cari_unvan2 AS Adi,0 as tip FROM            CARI_HESAPLAR WHERE        (cari_unvan1 like @filtre)  union all SELECT        adaycr_RECno AS id, adaycr_kod AS kod, adaycr_unvan1 + ' ' + adaycr_unvan2 AS unvan,2 as tip FROM            ADAY_CARI_HESAPLAR WHERE        (adaycr_unvan1 like @filtre)", new SqlParameter("@filtre", System.Data.SqlDbType.VarChar, 25) { Value = filtre });
                        }
                        break;
                }


                while (dr.Read())
                {
                    lst.Add(new Hesap { Adi = dr.GetString(2), ID = dr.GetInt32(0), Kodu = dr.GetString(1), HesapTipi = (HesapTipleri)dr.GetInt32(3) });
                }
                dr.Close();
            }
            return lst;
        }

        public List<Adres> AdresListele(string carikodu)
        {
            List<Adres> lst = new List<Adres>();
            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Mikro))
            {
                SqlDataReader dr = Helper.ExecuteReader("SELECT        adr_RECno AS ID, adr_adres_no AS No, adr_cadde + ' ' + adr_sokak + ' ' + adr_ilce + ' / ' + adr_il AS Adres FROM            CARI_HESAP_ADRESLERI WHERE        (adr_cari_kod = @kod)", new SqlParameter("@kod", System.Data.SqlDbType.VarChar, 25) { Value = carikodu });
                while (dr.Read())
                {
                    lst.Add(new Adres { ID = dr.GetInt32(0), No = dr.GetInt32(1), Adresi = dr.GetString(2) });
                }
                dr.Close();
            }
            return lst;
        }

        public List<Yetkili> YetkiliListele(string carikodu, int adresNo)
        {
            List<Yetkili> lst = new List<Yetkili>();
            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Mikro))
            {
                SqlDataReader dr = Helper.ExecuteReader("SELECT        mye_RECno, mye_isim, mye_soyisim FROM            CARI_HESAP_YETKILILERI WHERE        (mye_adres_no = @no) AND (mye_cari_kod = @kod)", new SqlParameter("@kod", System.Data.SqlDbType.VarChar, 25) { Value = carikodu }, new SqlParameter("@no", System.Data.SqlDbType.Int) { Value = adresNo });
                while (dr.Read())
                {
                    lst.Add(new Yetkili { ID = dr.GetInt32(0), Adi = dr.GetString(1), Soyadi = dr.GetString(2) });
                }
                dr.Close();
            }
            return lst;
        }

        Hesap HesapBul(int hesapID, int firmatipID)
        {
            Hesap result = null;
            string tip = "";
            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Local))
            {
                SqlDataReader dr = Helper.ExecuteReader("select Deger from Tanimlar where ID =@id", new SqlParameter("@id", System.Data.SqlDbType.Int) { Value = firmatipID });
                if (dr.HasRows)
                {
                    dr.Read();
                    tip = dr.GetString(0);
                    dr.Close();
                }
            }

            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Mikro))
            {
                SqlDataReader dr = null;
                switch (tip)
                {
                    case "0": //cari
                        dr = Helper.ExecuteReader("SELECT        cari_RECno AS ID, cari_kod AS Kodu, cari_unvan1 + ' ' + cari_unvan2 AS Adi FROM            CARI_HESAPLAR WHERE        (cari_RECno = @filtre)", new SqlParameter("@filtre", System.Data.SqlDbType.Int) { Value = hesapID });
                        break;
                }

                if (dr.HasRows)
                {
                    while (dr.Read())
                    {
                        result = new Hesap { Adi = dr.GetString(2), ID = dr.GetInt32(0), Kodu = dr.GetString(1), HesapTipi = HesapTipleri.Cari };
                    }
                    dr.Close();
                }
            }
            return result;
        }

        public Hesap HesapBilgileri(int hesapID, int firmaTip)
        {
            Hesap result = null;
            string tip = "";
            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Local))
            {
                SqlDataReader dr = Helper.ExecuteReader("select Deger from Tanimlar where ID =@id", new SqlParameter("@id", System.Data.SqlDbType.Int) { Value = firmaTip });
                if (dr.HasRows)
                {
                    dr.Read();
                    tip = dr.GetString(0);
                    dr.Close();
                }
            }

            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Mikro))
            {
                SqlDataReader dr = null;
                switch (tip)
                {
                    case "0": //cari
                        dr = Helper.ExecuteReader("SELECT        cari_RECno AS ID, cari_kod AS Kodu, cari_unvan1 + ' ' + cari_unvan2 AS Adi FROM            CARI_HESAPLAR WHERE        (cari_RECno = @filtre)", new SqlParameter("@filtre", System.Data.SqlDbType.Int) { Value = hesapID });
                        break;
                    case "1": //aday cari
                        dr = Helper.ExecuteReader("SELECT        adaycr_RECno AS id, adaycr_kod AS kod, adaycr_unvan1 + ' ' + adaycr_unvan2 AS unvan,2 as tip FROM            ADAY_CARI_HESAPLAR WHERE        (adaycr_RECno like @filtre)", new SqlParameter("@filtre", System.Data.SqlDbType.Int) { Value = hesapID });
                        break;
                }

                if (dr.HasRows)
                {
                    while (dr.Read())
                    {
                        result = new Hesap { Adi = dr.GetString(2), ID = dr.GetInt32(0), Kodu = dr.GetString(1), HesapTipi = HesapTipleri.Cari };
                    }
                    dr.Close();
                }
            }
            return result;
        }

        public Adres AdresBilgileri(int adresID)
        {
            Adres result = null;
            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Mikro))
            {
                SqlDataReader dr = Helper.ExecuteReader("SELECT   top 1 adr_RECno AS ID, adr_adres_no AS No, adr_cadde + ' ' + adr_sokak + ' ' + adr_ilce + ' / ' + adr_il AS Adres FROM            CARI_HESAP_ADRESLERI WHERE        (adr_RECno = @kod)", new SqlParameter("@kod", System.Data.SqlDbType.Int) { Value = adresID });
                while (dr.Read())
                {
                    result = new Adres { ID = dr.GetInt32(0), No = dr.GetInt32(1), Adresi = dr.GetString(2) };
                }
                dr.Close();
            }
            return result;
        }

        public Yetkili YetkiliBilgileri(int yetkiliID)
        {
            Yetkili result = null;
            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Mikro))
            {
                SqlDataReader dr = Helper.ExecuteReader("SELECT   top 1 mye_RECno, mye_isim, mye_soyisim FROM            CARI_HESAP_YETKILILERI WHERE        (mye_RECno = @id)", new SqlParameter("@id", System.Data.SqlDbType.Int) { Value = yetkiliID });
                while (dr.Read())
                {
                    result = new Yetkili { ID = dr.GetInt32(0), Adi = dr.GetString(1), Soyadi = dr.GetString(2) };
                }
                dr.Close();
            }
            return result;
        }


        public void AdayCariEkle(AdayCari aday)
        {
            StringBuilder sb = new StringBuilder();
            sb.AppendLine("if exists (SELECT adaycr_RECid_DBCno from ADAY_CARI_HESAPLAR WHERE  adaycr_kod = @Kodu) ");
            sb.AppendLine(" UPDATE       ADAY_CARI_HESAPLAR ");
            sb.AppendLine(" SET adaycr_lastup_date = GETDATE(), adaycr_unvan1 = @Unvan1, adaycr_unvan2 = @Unvan2, adaycr_sektor_kodu = @SektorKodu,adaycr_bolge_kodu = @BolgeKodu, adaycr_grup_kodu = @GrupKodu, adaycr_temsilci_kodu = @TemsilciKodu, adaycr_wwwadresi = @WebAdresi,adaycr_EMail = @EmailAdresi, adaycr_adr1_cadde = @Adres1Satir1, adaycr_adr1_sokak = @Adres1Satir2, adaycr_adr1_posta_kodu = @Adres1PostaKodu,adaycr_adr1_ilce = @Adres1Ilce, adaycr_adr1_il = @Adres1IL, adaycr_adr1_ulke = @Adres1Ulke, adaycr_adr1_tel_ulke_kodu = @Adres1UlkeKodu,adaycr_adr1_tel_bolge_kodu = @Adres1TelBolgeKodu, adaycr_adr1_tel_no1 = @Adres1Telefon, adaycr_adr2_cadde = @Adres2Satir1,adaycr_adr2_sokak = @Adres2Satir2, adaycr_adr2_posta_kodu = @Adres2PostaKodu, adaycr_adr2_ilce = @Adres2Ilce, adaycr_adr2_il = @Adres2IL, adaycr_adr2_ulke = @Adres2Ulke, adaycr_adr2_tel_ulke_kodu = @Adres2UlkeKodu, adaycr_adr2_tel_bolge_kodu = @Adres2TelBolgeKodu,adaycr_adr2_tel_no1 = @Adres2Telefon, adaycr_yetkili1_isim = @Yetkili1Isim, adaycr_yetkili1_dahili_telno = @Yetkili1DahiliTel,adaycr_yetkili1_email_adres = @Yetkili1Email, adaycr_yetkili1_cep_telno = @Yetkili1Ceptelefon, adaycr_yetkili2_isim = @Yetkili2Isim,adaycr_yetkili2_dahili_telno = @Yetkili2DahiliTel, adaycr_yetkili2_email_adres = @Yetkili2Email, adaycr_yetkili2_cep_telno = @Yetkili2Ceptelefon,adaycr_yetkili3_isim = @Yetkili3Isim, adaycr_yetkili3_dahili_telno = @Yetkili3DahiliTel, adaycr_yetkili3_email_adres = @Yetkili3Email,adaycr_yetkili3_cep_telno = @Yetkili3Ceptelefon, adaycr_yetkili4_isim = @Yetkili4Isim, adaycr_yetkili4_dahili_telno = @Yetkili4DahiliTel, adaycr_yetkili4_email_adres = @Yetkili4Email, adaycr_yetkili4_cep_telno = @Yetkili4Ceptelefon, adaycr_yetkili5_isim = @Yetkili5Isim,adaycr_yetkili5_dahili_telno = @Yetkili5DahiliTel, adaycr_yetkili5_email_adres = @Yetkili5Email, adaycr_yetkili5_cep_telno = @Yetkili5Ceptelefon  ");
            sb.AppendLine(" WHERE        (adaycr_kod = @Kodu) ");
            sb.AppendLine(" ELSE ");
            sb.AppendLine(" INSERT INTO ADAY_CARI_HESAPLAR (adaycr_RECid_DBCno, adaycr_RECid_RECno, adaycr_SpecRECno, adaycr_iptal, adaycr_fileid, adaycr_hidden, adaycr_kilitli, adaycr_degisti,adaycr_checksum, adaycr_create_user, adaycr_create_date, adaycr_lastup_user, adaycr_lastup_date, adaycr_special1, adaycr_special2, adaycr_special3,adaycr_kod, adaycr_unvan1, adaycr_unvan2, adaycr_sektor_kodu, adaycr_bolge_kodu, adaycr_grup_kodu, adaycr_temsilci_kodu, adaycr_wwwadresi,adaycr_EMail, adaycr_adr1_cadde, adaycr_adr1_sokak, adaycr_adr1_posta_kodu, adaycr_adr1_ilce, adaycr_adr1_il, adaycr_adr1_ulke,adaycr_adr1_tel_ulke_kodu, adaycr_adr1_tel_bolge_kodu, adaycr_adr1_tel_no1, adaycr_adr2_cadde, adaycr_adr2_sokak, adaycr_adr2_posta_kodu,adaycr_adr2_ilce, adaycr_adr2_il, adaycr_adr2_ulke, adaycr_adr2_tel_ulke_kodu, adaycr_adr2_tel_bolge_kodu, adaycr_adr2_tel_no1, adaycr_yetkili1_isim,adaycr_yetkili1_dahili_telno, adaycr_yetkili1_email_adres, adaycr_yetkili1_cep_telno, adaycr_yetkili2_isim, adaycr_yetkili2_dahili_telno,adaycr_yetkili2_email_adres, adaycr_yetkili2_cep_telno, adaycr_yetkili3_isim, adaycr_yetkili3_dahili_telno, adaycr_yetkili3_email_adres,adaycr_yetkili3_cep_telno, adaycr_yetkili4_isim, adaycr_yetkili4_dahili_telno, adaycr_yetkili4_email_adres, adaycr_yetkili4_cep_telno,adaycr_yetkili5_isim, adaycr_yetkili5_dahili_telno, adaycr_yetkili5_email_adres, adaycr_yetkili5_cep_telno) ");
            sb.AppendLine(" VALUES        (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, GETDATE(), 0, GETDATE(), N'', N'',N'',@Kodu,@Unvan1,@Unvan2,@SektorKodu,@BolgeKodu,@GrupKodu,@TemsilciKodu,@WebAdresi,@EmailAdresi,@Adres1Satir1,@Adres1Satir2,@Adres1PostaKodu,@Adres1Ilce,@Adres1IL,@Adres1Ulke,@Adres1UlkeKodu,@Adres1TelBolgeKodu,@Adres1Telefon,@Adres2Satir1,@Adres2Satir2,@Adres2PostaKodu,@Adres2Ilce,@Adres2IL,@Adres2Ulke,@Adres2UlkeKodu,@Adres2TelBolgeKodu,@Adres2Telefon,@Yetkili1Isim,@Yetkili1DahiliTel,@Yetkili1Email,@Yetkili1Ceptelefon,@Yetkili2Isim,@Yetkili2DahiliTel,@Yetkili2Email,@Yetkili2Ceptelefon,@Yetkili3Isim,@Yetkili3DahiliTel,@Yetkili3Email,@Yetkili3Ceptelefon,@Yetkili4Isim,@Yetkili4DahiliTel,@Yetkili4Email,@Yetkili4Ceptelefon,@Yetkili5Isim,@Yetkili5DahiliTel,@Yetkili5Email,@Yetkili5Ceptelefon) ");

            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Mikro))
            {
                prm = new Parametre();
                SqlParameter[] p = prm.ToArray(aday);
                Helper.ExecuteNonQuery(sb.ToString(), p);
            }
        }


        public List<AdayCariOzet> AdayCariListesi()
        {
            List<AdayCariOzet> lst = new List<AdayCariOzet>();
            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Mikro))
            {
                SqlDataReader dr = Helper.ExecuteReader("SELECT adaycr_kod, adaycr_unvan1, adaycr_unvan2,isnull((SELECT TOP (1) sktr_ismi FROM STOK_SEKTORLERI WHERE (sktr_kod = ADAY_CARI_HESAPLAR.adaycr_sektor_kodu)),''),isnull((SELECT TOP (1) bol_ismi FROM CARI_HESAP_BOLGELERI WHERE (bol_kod = ADAY_CARI_HESAPLAR.adaycr_bolge_kodu)),''),isnull((SELECT TOP (1) crg_isim FROM CARI_HESAP_GRUPLARI WHERE (crg_kod = ADAY_CARI_HESAPLAR.adaycr_grup_kodu)),''),isnull((SELECT TOP (1) cari_per_adi + cari_per_soyadi AS EXPR1 FROM  CARI_PERSONEL_TANIMLARI WHERE        (cari_per_kod = ADAY_CARI_HESAPLAR.adaycr_temsilci_kodu)),'') FROM ADAY_CARI_HESAPLAR", null);
                while (dr.Read())
                {
                    lst.Add(new AdayCariOzet
                    {
                        Kodu = (string)dr["adaycr_kod"],
                        Unvan1 = (string)dr["adaycr_unvan1"],
                        Unvan2 = (string)dr["adaycr_unvan2"],
                        SektorAdi = dr.GetString(3),
                        BolgeAdi = dr.GetString(4),
                        GrupAdi = dr.GetString(5),
                        TemsilciAdi = dr.GetString(6)
                    });
                }
                dr.Close();
            }
            return lst;
        }

        public void AdayCariSil(string kodu)
        {
            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Mikro))
            {
                prm = new Parametre();
                prm.Ekle(" @kod", System.Data.SqlDbType.VarChar, kodu, 25);
                Helper.ExecuteNonQuery("DELETE FROM ADAY_CARI_HESAPLAR WHERE        (adaycr_kod = @kod)", prm.ToArray());
            }
        }

        public void CariyeCevir(AdayCari aday)
        {
            throw new NotImplementedException();
        }


        public List<Yetkili> CariGruplariListele()
        {
            List<Yetkili> lst = new List<Yetkili>();
            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Mikro))
            {
                SqlDataReader dr = Helper.ExecuteReader("SELECT      crg_RECno, crg_kod, crg_isim FROM            CARI_HESAP_GRUPLARI", null);
                while (dr.Read())
                {
                    lst.Add(new Yetkili { ID = dr.GetInt32(0), Adi = dr.GetString(1), Soyadi = dr.GetString(2) });
                }
                dr.Close();
            }
            return lst;
        }

        public List<Yetkili> CariSektorListele()
        {
            List<Yetkili> lst = new List<Yetkili>();
            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Mikro))
            {
                SqlDataReader dr = Helper.ExecuteReader("SELECT    sktr_RECno, sktr_kod, sktr_ismi FROM            STOK_SEKTORLERI", null);
                while (dr.Read())
                {
                    lst.Add(new Yetkili { ID = dr.GetInt32(0), Adi = dr.GetString(1), Soyadi = dr.GetString(2) });
                }
                dr.Close();
            }
            return lst;
        }

        public List<Yetkili> CariBolgeListele()
        {
            List<Yetkili> lst = new List<Yetkili>();
            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Mikro))
            {
                SqlDataReader dr = Helper.ExecuteReader("SELECT  bol_RECno, bol_kod, bol_ismi FROM            CARI_HESAP_BOLGELERI", null);
                while (dr.Read())
                {
                    lst.Add(new Yetkili { ID = dr.GetInt32(0), Adi = dr.GetString(1), Soyadi = dr.GetString(2) });
                }
                dr.Close();
            }
            return lst;
        }

        public List<Yetkili> CariTemsilciListele()
        {
            List<Yetkili> lst = new List<Yetkili>();
            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Mikro))
            {
                SqlDataReader dr = Helper.ExecuteReader("SELECT        cari_per_RECno, cari_per_kod, cari_per_adi + ' ' + cari_per_soyadi FROM            CARI_PERSONEL_TANIMLARI", null);
                while (dr.Read())
                {
                    lst.Add(new Yetkili { ID = dr.GetInt32(0), Adi = dr.GetString(1), Soyadi = dr.GetString(2) });
                }
                dr.Close();
            }
            return lst;
        }


        public AdayCari AdayCariBilgi(string kodu)
        {
            AdayCari cari = new AdayCari();
            StringBuilder sb = new StringBuilder();
            sb.Append(" SELECT        adaycr_unvan1,adaycr_unvan2, adaycr_temsilci_kodu, adaycr_grup_kodu, adaycr_sektor_kodu, adaycr_bolge_kodu, adaycr_wwwadresi, adaycr_EMail, adaycr_adr1_cadde, adaycr_adr1_sokak, adaycr_adr1_posta_kodu, adaycr_adr1_ilce, adaycr_adr1_il, adaycr_adr1_ulke, adaycr_adr1_tel_ulke_kodu,adaycr_adr1_tel_bolge_kodu, adaycr_adr1_tel_no1, adaycr_adr2_cadde, adaycr_adr2_sokak, adaycr_adr2_posta_kodu, adaycr_adr2_ilce, adaycr_adr2_il, adaycr_adr2_ulke, adaycr_adr2_tel_ulke_kodu, adaycr_adr2_tel_bolge_kodu, adaycr_adr2_tel_no1, adaycr_yetkili1_isim, adaycr_yetkili1_dahili_telno, adaycr_yetkili1_cep_telno, adaycr_yetkili1_email_adres, adaycr_yetkili2_isim, adaycr_yetkili2_dahili_telno, adaycr_yetkili2_cep_telno, adaycr_yetkili2_email_adres, adaycr_yetkili3_isim, adaycr_yetkili3_dahili_telno, adaycr_yetkili3_cep_telno, adaycr_yetkili3_email_adres, adaycr_yetkili4_isim, adaycr_yetkili4_dahili_telno, adaycr_yetkili4_cep_telno, adaycr_yetkili4_email_adres, adaycr_yetkili5_isim, adaycr_yetkili5_dahili_telno, adaycr_yetkili5_cep_telno, adaycr_yetkili5_email_adres,isnull((SELECT TOP (1) sktr_ismi FROM STOK_SEKTORLERI WHERE (sktr_kod = ADAY_CARI_HESAPLAR.adaycr_sektor_kodu)),''),isnull((SELECT TOP (1) bol_ismi FROM CARI_HESAP_BOLGELERI WHERE (bol_kod = ADAY_CARI_HESAPLAR.adaycr_bolge_kodu)),''),isnull((SELECT TOP (1) crg_isim FROM CARI_HESAP_GRUPLARI WHERE (crg_kod = ADAY_CARI_HESAPLAR.adaycr_grup_kodu)),''),isnull((SELECT TOP (1) cari_per_adi + cari_per_soyadi AS EXPR1 FROM  CARI_PERSONEL_TANIMLARI WHERE        (cari_per_kod = ADAY_CARI_HESAPLAR.adaycr_temsilci_kodu)),'') ");
            sb.Append(" FROM            ADAY_CARI_HESAPLAR WHERE        (adaycr_kod = @kod) ");
            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Mikro))
            {
                prm = new Parametre();
                prm.Ekle("@kod", System.Data.SqlDbType.VarChar, kodu, 25);
                SqlDataReader dr = Helper.ExecuteReader(sb.ToString(), prm.ToArray());
                if (dr.HasRows)
                {
                    dr.Read();
                    cari.Unvan1 = dr.GetString(0);
                    cari.Unvan2 = dr.GetString(1);
                    cari.TemsilciKodu = dr.GetString(2);
                    cari.TemsilciAdi = dr.GetString(49);
                    cari.GrupKodu = dr.GetString(3);
                    cari.GrupAdi = dr.GetString(48);
                    cari.SektorKodu = dr.GetString(4);
                    cari.SektorAdi = dr.GetString(46);
                    cari.BolgeKodu = dr.GetString(5);
                    cari.BolgeAdi = dr.GetString(47);
                    cari.WebAdresi = dr.GetString(6);
                    cari.EmailAdresi = dr.GetString(7);

                    cari.Adres1Satir1 = dr.GetString(8);
                    cari.Adres1Satir2 = dr.GetString(9);
                    cari.Adres1PostaKodu = dr.GetString(10);
                    cari.Adres1Ilce = dr.GetString(11);
                    cari.Adres1IL = dr.GetString(12);
                    cari.Adres1Ulke = dr.GetString(13);
                    cari.Adres1UlkeKodu = dr.GetString(14);
                    cari.Adres1TelBolgeKodu = dr.GetString(15);
                    cari.Adres1Telefon = dr.GetString(16);

                    cari.Adres2Satir1 = dr.GetString(17);
                    cari.Adres2Satir2 = dr.GetString(18);
                    cari.Adres2PostaKodu = dr.GetString(19);
                    cari.Adres2Ilce = dr.GetString(20);
                    cari.Adres2IL = dr.GetString(21);
                    cari.Adres2Ulke = dr.GetString(22);
                    cari.Adres2UlkeKodu = dr.GetString(23);
                    cari.Adres2TelBolgeKodu = dr.GetString(24);
                    cari.Adres2Telefon = dr.GetString(25);

                    cari.Yetkili1Isim = dr.GetString(26);
                    cari.Yetkili1DahiliTel = dr.GetString(27);
                    cari.Yetkili1Ceptelefon = dr.GetString(28);
                    cari.Yetkili1Email = dr.GetString(29);

                    cari.Yetkili2Isim = dr.GetString(30);
                    cari.Yetkili2DahiliTel = dr.GetString(31);
                    cari.Yetkili2Ceptelefon = dr.GetString(32);
                    cari.Yetkili2Email = dr.GetString(33);

                    cari.Yetkili3Isim = dr.GetString(34);
                    cari.Yetkili3DahiliTel = dr.GetString(35);
                    cari.Yetkili3Ceptelefon = dr.GetString(36);
                    cari.Yetkili3Email = dr.GetString(37);

                    cari.Yetkili4Isim = dr.GetString(38);
                    cari.Yetkili4DahiliTel = dr.GetString(39);
                    cari.Yetkili4Ceptelefon = dr.GetString(40);
                    cari.Yetkili4Email = dr.GetString(41);

                    cari.Yetkili5Isim = dr.GetString(42);
                    cari.Yetkili5DahiliTel = dr.GetString(43);
                    cari.Yetkili5Ceptelefon = dr.GetString(44);
                    cari.Yetkili5Email = dr.GetString(45);
                }
                dr.Close();
            }
            return cari;
        }


        public List<Gorevler> TelefonlaGorusulecekler(int kullaniciID)
        {
            return GorevListesi(kullaniciID, 0);
        }
        public List<Gorevler> ZiyaretEdilecekler(int kullaniciID)
        {
            return GorevListesi(kullaniciID, 1);
        }

        List<Gorevler> GorevListesi(int kullaniciID, int tip)
        {
            StringBuilder sb = new StringBuilder();
            sb.AppendLine("SELECT Gorusmeler.ID, isnull((SELECT        TOP (1) Adi FROM            Tanimlar WHERE        (Tip = 8) AND (ID = Gorusmeler.FirmaTip)),'') as tip, Gorusmeler.FirmaKodu, Gorusmeler.FirmaUnvani, Gorusmeler.BaslangicTarihi, Gorusmeler.Yer,Gorusmeler.Konu ");
            sb.AppendLine(" FROM            Gorusmeler LEFT OUTER JOIN Katilimcilar ON Gorusmeler.ID = Katilimcilar.HareketID ");
            sb.AppendLine(string.Format(" WHERE        (Gorusmeler.HareketTip = 1) AND (Gorusmeler.GorusmeTipID IN (SELECT ID FROM Tanimlar WHERE (Tip = 16) AND (Deger = '{0}'))) ", tip));
            sb.AppendLine(" ORDER BY Gorusmeler.Oncelik ");
            List<Gorevler> lst = new List<Gorevler>();
            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Local))
            {
                SqlDataReader dr = Helper.ExecuteReader(sb.ToString(), null);
                while (dr.Read())
                {
                    lst.Add(new Gorevler { ID = dr.GetInt32(0), FirmaTipi = dr.GetString(1), FirmaKodu = dr.GetString(2), FirmaUnvani = dr.GetString(3), BaslangicTarihi = dr.GetDateTime(4), Yer = dr.GetString(5), Konu = dr.GetString(6) });
                }
                dr.Close();
            }
            return lst;
        }

        public Hareket GorusmeyeBasla(bool adaycari, int cariID, string carikodu, string cariunvani, int usrid)
        {
            Hareket hr = new Hareket();
            int id = 0;
            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Local))
            {
                int firmatipi = 0;
                if (adaycari)
                {
                    firmatipi = Helper.ExecuteScalar<int>("SELECT        ID FROM            Tanimlar WHERE        (Tip = 8) AND (Deger = '1')", null);
                }
                else
                {
                    firmatipi = Helper.ExecuteScalar<int>("SELECT        ID FROM            Tanimlar WHERE        (Tip = 8) AND (Deger = '0')", null);
                }

                hr.AdresID = 0;
                hr.BaslangicTarihi = DateTime.Now;
                hr.BitisTarihi = DateTime.Now;
                hr.Detay = "";
                hr.EkleyenKullanici = usrid;
                hr.FirmaDurumID = 0;
                hr.FirmaID = cariID;
                hr.FirmaKodu = carikodu;
                hr.FirmaTip = firmatipi;
                hr.FirmaTipAdi = "";
                hr.FirmaUnvani = cariunvani;
                hr.GorusmeTipID = Helper.ExecuteScalar<int>("SELECT        ID FROM            Tanimlar WHERE        (Tip = 9) AND (Deger = '0')", null); ;
                hr.GuncellemeTarihi = DateTime.Now;
                hr.GuncelleyenKullanici = usrid;
                hr.HareketTip = 0;
                hr.KapamaNedeniID = 0;
                hr.KayitTarihi = DateTime.Now;
                hr.Konu = "";
                hr.Notlar = "";
                hr.Oncelik = 0;
                hr.Yer = "";
                hr.Yetkili = "";


                prm = new Parametre();
                SqlParameter[] p = prm.ToArray(hr);
                id = Helper.ExecuteScalar<int>("Insert into Gorusmeler (HareketTip,FirmaTip,FirmaID,Oncelik,AdresID,BaslangicTarihi,BitisTarihi,Yer,Konu,Detay,KayitTarihi,EkleyenKullanici,GuncelleyenKullanici,GuncellemeTarihi,FirmaDurumID,KapamaNedeniID,Notlar,Yetkili,GorusmeTipID,FirmaKodu,FirmaUnvani) values(@HareketTip, @FirmaTip, @FirmaID, @Oncelik, @AdresID, @BaslangicTarihi, @BitisTarihi, @Yer, @Konu, @Detay, @KayitTarihi, @EkleyenKullanici, @GuncelleyenKullanici, @GuncellemeTarihi, @FirmaDurumID, @KapamaNedeniID, @Notlar,@Yetkili,@GorusmeTipID,@FirmaKodu,@FirmaUnvani);select @@identity", p);
                hr.ID = id;
            }
            return hr;
        }

        public Hareket RandevuyaBasla(bool adaycari, int cariID, string carikodu, string cariunvani, int usrid)
        {
            Hareket hr = new Hareket();
            int id = 0;
            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Local))
            {
                int firmatipi = 0;
                if (adaycari)
                {
                    firmatipi = Helper.ExecuteScalar<int>("SELECT        ID FROM            Tanimlar WHERE        (Tip = 8) AND (Deger = '1')", null);
                }
                else
                {
                    firmatipi = Helper.ExecuteScalar<int>("SELECT        ID FROM            Tanimlar WHERE        (Tip = 8) AND (Deger = '0')", null);
                }

                hr.AdresID = 0;
                hr.BaslangicTarihi = DateTime.Now;
                hr.BitisTarihi = DateTime.Now;
                hr.Detay = "";
                hr.EkleyenKullanici = usrid;
                hr.FirmaDurumID = 0;
                hr.FirmaID = cariID;
                hr.FirmaKodu = carikodu;
                hr.FirmaTip = firmatipi;
                hr.FirmaTipAdi = "";
                hr.FirmaUnvani = cariunvani;
                hr.GorusmeTipID = Helper.ExecuteScalar<int>("SELECT        ID FROM            Tanimlar WHERE        (Tip = 16) AND (Deger = '0')", null); ;
                hr.GuncellemeTarihi = DateTime.Now;
                hr.GuncelleyenKullanici = usrid;
                hr.HareketTip = 1;
                hr.KapamaNedeniID = 0;
                hr.KayitTarihi = DateTime.Now;
                hr.Konu = "";
                hr.Notlar = "";
                hr.Oncelik = 0;
                hr.Yer = "";
                hr.Yetkili = "";


                prm = new Parametre();
                SqlParameter[] p = prm.ToArray(hr);
                id = Helper.ExecuteScalar<int>("Insert into Gorusmeler (HareketTip,FirmaTip,FirmaID,Oncelik,AdresID,BaslangicTarihi,BitisTarihi,Yer,Konu,Detay,KayitTarihi,EkleyenKullanici,GuncelleyenKullanici,GuncellemeTarihi,FirmaDurumID,KapamaNedeniID,Notlar,Yetkili,GorusmeTipID,FirmaKodu,FirmaUnvani) values(@HareketTip, @FirmaTip, @FirmaID, @Oncelik, @AdresID, @BaslangicTarihi, @BitisTarihi, @Yer, @Konu, @Detay, @KayitTarihi, @EkleyenKullanici, @GuncelleyenKullanici, @GuncellemeTarihi, @FirmaDurumID, @KapamaNedeniID, @Notlar,@Yetkili,@GorusmeTipID,@FirmaKodu,@FirmaUnvani);select @@identity", p);
                hr.ID = id;
            }
            return hr;
        }


        public void AdayCariCevir(string adaycarikodu, string yenicariKodu)
        {
            Mikro mk = new Mikro();
            mk.AdayCariCevir(adaycarikodu, yenicariKodu);
        }



        string ConnString = ConfigurationManager.ConnectionStrings["localdb"].ConnectionString;

        public string AnketKaydet(AnketTanimlari bilgi)
        {
            try
            {
                int ankID = AnketTanimEkle(bilgi.ID, bilgi.AnketAdi, bilgi.Gecerli);

                foreach (var item in bilgi.Sorular)
                {
                    int soruID = AnketSoruEkle(item.ID, ankID, item.Tanim, item.CokluSecim);
                    CevapSil(soruID);
                    for (int i = 0; i < item.Secenek.Length; i++)
                    {
                        AnketCevapEkle(i, soruID, item.Secenek[i], item.OzelSecenek);
                    }
                }
                return "Kayıt Başarılı";
            }
            catch (Exception ex)
            {
                return "Hata : \n" + ex.Message + "InnerException : \n" + ex.InnerException;
                throw;
            }
        }

        public AnketTanimlari AnketBul(int AnketID)
        {
            AnketTanimlari tnm = new AnketTanimlari();
            try
            {
                tnm.Sorular = new List<Soru>();
                Soru soru = new Soru();
                using (SqlConnection cnn = new SqlConnection(ConnString))
                {
                    cnn.Open();
                    using (SqlCommand cmd = new SqlCommand("Select * from AnketTanim Where ID = @ID", cnn))
                    {
                        cmd.Parameters.Add(new SqlParameter("ID", AnketID));
                        DataSet ds = new DataSet();
                        using (SqlDataAdapter adp = new SqlDataAdapter(cmd))
                        {
                            adp.Fill(ds, "AnketTanim");
                            tnm.AnketAdi = ds.Tables["AnketTanim"].Rows[0]["Adi"].ToString();
                            tnm.Gecerli = Convert.ToBoolean(ds.Tables["AnketTanim"].Rows[0]["Gecerli"]);
                            tnm.ID = Convert.ToInt32(ds.Tables["AnketTanim"].Rows[0]["ID"]);
                        }
                    }
                    using (SqlCommand cmd = new SqlCommand("Select * from AnketSorulari Where AnketID = @ID", cnn))
                    {
                        cmd.Parameters.Add(new SqlParameter("ID", tnm.ID));
                        DataSet ds = new DataSet();
                        using (SqlDataAdapter adp = new SqlDataAdapter(cmd))
                        {
                            adp.Fill(ds, "AnketSoru");
                            for (int i = 0; i < ds.Tables["AnketSoru"].Rows.Count; i++)
                            {
                                soru = new Soru();
                                soru.Tanim = ds.Tables["AnketSoru"].Rows[i]["Soru"].ToString();
                                soru.CokluSecim = Convert.ToBoolean(ds.Tables["AnketSoru"].Rows[i]["CokluSecim"]);
                                soru.ID = Convert.ToInt32(ds.Tables["AnketSoru"].Rows[i]["ID"]);
                                using (SqlCommand cmdd = new SqlCommand("Select * from AnketCevaplari Where SoruID = @ID", cnn))
                                {
                                    cmdd.Parameters.Add(new SqlParameter("ID", soru.ID));
                                    DataSet dss = new DataSet();
                                    using (SqlDataAdapter adpp = new SqlDataAdapter(cmdd))
                                    {
                                        adpp.Fill(dss, "AnketCevap");
                                        soru.Secenek = new string[dss.Tables["AnketCevap"].Rows.Count];
                                        for (int j = 0; j < dss.Tables["AnketCevap"].Rows.Count; j++)
                                        {
                                            soru.Secenek[j] = dss.Tables["AnketCevap"].Rows[j]["Secenek"].ToString();
                                            soru.OzelSecenek = Convert.ToBoolean(dss.Tables["AnketCevap"].Rows[j]["OzelCevap"]);
                                        }
                                    }
                                }
                                tnm.Sorular.Add(soru);
                            }
                        }
                    }
                    cnn.Close();
                }
            }
            catch (Exception ex)
            {
                ex.Message.ToString();
                throw;
            }
            return tnm;
        }

        public Soru SoruGetir(int MusteriID)
        {
            Soru soru = new Soru();
            try
            {
                using (SqlConnection cnn = new SqlConnection(ConnString))
                {
                    cnn.Open();
                    using (SqlCommand cmd = new SqlCommand("SELECT        ID, AnketID, Soru, CokluSecim FROM            AnketSorulari WHERE        (ID NOT IN (SELECT        SoruID FROM            Anketler WHERE        (MusteriID = @MusteriID)))", cnn))
                    {
                        cmd.Parameters.Add(new SqlParameter("MusteriID", MusteriID));
                        DataSet ds = new DataSet();
                        using (SqlDataAdapter adp = new SqlDataAdapter(cmd))
                        {
                            adp.Fill(ds, "AnketSoru");

                            soru.Tanim = ds.Tables["AnketSoru"].Rows[0]["Soru"].ToString();
                            soru.CokluSecim = Convert.ToBoolean(ds.Tables["AnketSoru"].Rows[0]["CokluSecim"]);
                            soru.ID = Convert.ToInt32(ds.Tables["AnketSoru"].Rows[0]["ID"]);
                            using (SqlCommand cmdd = new SqlCommand("Select * from AnketCevaplari Where SoruID = @ID", cnn))
                            {
                                cmdd.Parameters.Add(new SqlParameter("ID", soru.ID));
                                DataSet dss = new DataSet();
                                using (SqlDataAdapter adpp = new SqlDataAdapter(cmdd))
                                {
                                    adpp.Fill(dss, "AnketCevap");
                                    soru.Secenek = new string[dss.Tables["AnketCevap"].Rows.Count];
                                    soru.CevapID = new string[dss.Tables["AnketCevap"].Rows.Count];
                                    for (int j = 0; j < dss.Tables["AnketCevap"].Rows.Count; j++)
                                    {
                                        soru.Secenek[j] = dss.Tables["AnketCevap"].Rows[j]["Secenek"].ToString();
                                        soru.CevapID[j] = dss.Tables["AnketCevap"].Rows[j]["ID"].ToString();
                                        soru.OzelSecenek = Convert.ToBoolean(dss.Tables["AnketCevap"].Rows[j]["OzelCevap"]);
                                    }
                                }
                            }
                        }
                    }
                    cnn.Close();
                }
            }
            catch (Exception ex)
            {
                ex.Message.ToString();
                soru = null;
            }
            return soru;
        }

        public int AnketTanimEkle(int ID, string anketAdi, bool Gecerli)
        {
            int id = -1;
            try
            {
                using (SqlConnection cnn = new SqlConnection(ConnString))
                {
                    cnn.Open();
                    using (SqlCommand cmd = new SqlCommand("if exists(select * from AnketTanim Where ID = @ID) Update AnketTanim Set Adi =@Adi, Gecerli = @Gecerli Where ID = @ID  Else Insert Into AnketTanim values(@Adi,@Gecerli); Select Scope_Identity()", cnn))
                    {
                        cmd.Parameters.Add(new SqlParameter("Adi", anketAdi));
                        cmd.Parameters.Add(new SqlParameter("ID", ID));
                        cmd.Parameters.Add(new SqlParameter("Gecerli", Gecerli));
                        if (ID == 0)
                            id = Convert.ToInt32(cmd.ExecuteScalar());
                        else
                        {
                            id = ID;
                            cmd.ExecuteNonQuery();
                        }

                    }
                    cnn.Close();
                }
                return id;
            }
            catch (Exception ex)
            {
                ex.Message.ToString();
                throw;
            }
        }

        private void CevapSil(int SoruID)
        {
            try
            {
                using (SqlConnection cnn = new SqlConnection(ConnString))
                {
                    cnn.Open();
                    using (SqlCommand cmd = new SqlCommand("Delete from AnketCevaplari Where SoruID = " + SoruID, cnn))
                    {

                        cmd.ExecuteNonQuery();
                    }
                    cnn.Close();
                }
            }
            catch (Exception)
            {
                throw;
            }
        }

        public int AnketSoruEkle(int ID, int AnketID, string SoruAdi, bool CokluSecim)
        {
            int id = -1;
            try
            {
                using (SqlConnection cnn = new SqlConnection(ConnString))
                {
                    cnn.Open();
                    using (SqlCommand cmd = new SqlCommand("if exists(select * from AnketSorulari Where ID = @ID) Update AnketSorulari Set AnketID = @AnketID, Soru = @Adi, CokluSecim = @CokluSecim Where ID = @ID  Else Insert Into AnketSorulari values(@AnketID,@Adi,@CokluSecim); Select Scope_Identity()", cnn))
                    {
                        cmd.Parameters.Add(new SqlParameter("ID", ID));
                        cmd.Parameters.Add(new SqlParameter("AnketID", AnketID));
                        cmd.Parameters.Add(new SqlParameter("Adi", SoruAdi));
                        cmd.Parameters.Add(new SqlParameter("CokluSecim", CokluSecim));
                        if (ID == 0)
                            id = Convert.ToInt32(cmd.ExecuteScalar());
                        else
                        {
                            id = ID;
                            cmd.ExecuteNonQuery();
                        }
                    }
                    cnn.Close();
                }
                return id;
            }
            catch (Exception)
            {
                throw;
            }
        }

        public void AnketCevapEkle(int ID, int SoruID, string Senecek, bool OzelCevap)
        {
            try
            {
                using (SqlConnection cnn = new SqlConnection(ConnString))
                {
                    cnn.Open();
                    using (SqlCommand cmd = new SqlCommand("Insert Into AnketCevaplari values(@ID, @SoruID, @Secenek, @OzelCevap)", cnn))
                    {
                        cmd.Parameters.Add(new SqlParameter("ID", ID));
                        cmd.Parameters.Add(new SqlParameter("SoruID", SoruID));
                        cmd.Parameters.Add(new SqlParameter("Secenek", Senecek));
                        cmd.Parameters.Add(new SqlParameter("OzelCevap", OzelCevap));
                        cmd.ExecuteNonQuery();
                    }
                    cnn.Close();
                }
            }
            catch (Exception)
            {
                throw;
            }
        }

        public void Anketler(int ID, int MusteriTip, int MusteriID, int AnketID, int SoruID, int CevapID, string OzelCevap, DateTime Tarih)
        {
            try
            {
                using (SqlConnection cnn = new SqlConnection(ConnString))
                {
                    cnn.Open();
                    using (SqlCommand cmd = new SqlCommand("if exists(select * from Anketler Where ID = @ID) Update Anketler Set MusteriTip = @MusteriTip, MusteriID = @MusteriID, AnketID = @AnketID, SoruID = @SoruID, CevapID = @CevapID, OzelCevap = @OzelCevap, Tarih = @Tarih Where ID = @ID  Else Insert Into Anketler values(@MusteriTip,@MusteriID,@AnketID,@SoruID,@CevapID,@OzelCevap,@Tarih)", cnn))
                    {
                        cmd.Parameters.Add(new SqlParameter("ID", ID));
                        cmd.Parameters.Add(new SqlParameter("MusteriTip", MusteriTip));
                        cmd.Parameters.Add(new SqlParameter("MusteriID", MusteriID));
                        cmd.Parameters.Add(new SqlParameter("AnketID", AnketID));
                        cmd.Parameters.Add(new SqlParameter("SoruID", SoruID));
                        cmd.Parameters.Add(new SqlParameter("CevapID", CevapID));
                        cmd.Parameters.Add(new SqlParameter("OzelCevap", OzelCevap));
                        cmd.Parameters.Add(new SqlParameter("Tarih", Tarih));
                        cmd.ExecuteNonQuery();
                    }
                    cnn.Close();
                }
            }
            catch (Exception)
            {
                throw;
            }
        }

        public void SoruSil(int SoruID)
        {
            try
            {
                using (SqlConnection cnn = new SqlConnection(ConnString))
                {
                    cnn.Open();
                    using (SqlCommand cmd = new SqlCommand("Delete from AnketSorulari Where ID = " + SoruID, cnn))
                    {
                        cmd.ExecuteNonQuery();
                        CevapSil(SoruID);
                    }
                    cnn.Close();
                }
            }
            catch (Exception)
            {
                throw;
            }
        }

        public void AnketSil(int AnketID)
        {
            try
            {
                using (SqlConnection cnn = new SqlConnection(ConnString))
                {
                    cnn.Open();
                    using (SqlCommand cmd = new SqlCommand("Delete from AnketTanim Where ID = " + AnketID + ";Select ID from AnketSorulari Where AnketID =" + AnketID, cnn))
                    {
                        int SoruID = Convert.ToInt32(cmd.ExecuteScalar());
                        SoruSil(SoruID);
                        CevapSil(SoruID);
                    }
                    cnn.Close();
                }
            }
            catch (Exception)
            {
                throw;
            }
        }

        public List<AnketTanimlari> AnketListesi()
        {
            List<AnketTanimlari> lst = new List<AnketTanimlari>();
            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Local))
            {
                SqlDataReader dr = Helper.ExecuteReader("Select * from AnketTanim", null);
                while (dr.Read())
                {
                    lst.Add(new AnketTanimlari { AnketAdi = dr["Adi"].ToString(), Gecerli = (bool)dr["Gecerli"], ID = (int)dr["ID"] });
                }
                dr.Close();
            }
            return lst;
        }


        public string KampanyaKaydet(int ID, int No, string Adi, byte Tip, string FirmaKod, string FirmaUnvan, string StokKod, string StokAdi, double Fiyat)
        {
            try
            {
                using (SqlConnection cnn = new SqlConnection(ConnString))
                {
                    cnn.Open();
                    using (SqlCommand cmd = new SqlCommand("if exists(select * from Kampanya Where ID = @ID) Update Kampanya Set Adi = @Adi, Tipi = @Tip, FirmaKod = @FirmaKod, FirmaUnvan = @FirmaUnvan, StokKodu = @StokKod, StokAdi = @StokAdi, Fiyat = @Fiyat Where ID = @ID  Else Insert Into Kampanya values(@Adi,@Tip,@FirmaKod,@FirmaUnvan,@StokKod,@StokAdi,@Fiyat,@KampanyaNo)", cnn))
                    {
                        cmd.Parameters.Add(new SqlParameter("ID", ID));
                        cmd.Parameters.Add(new SqlParameter("KampanyaNo", No));
                        cmd.Parameters.Add(new SqlParameter("Adi", Adi));
                        cmd.Parameters.Add(new SqlParameter("Tip", Tip));
                        cmd.Parameters.Add(new SqlParameter("FirmaKod", FirmaKod));
                        cmd.Parameters.Add(new SqlParameter("FirmaUnvan", FirmaUnvan));
                        cmd.Parameters.Add(new SqlParameter("StokKod", StokKod));
                        cmd.Parameters.Add(new SqlParameter("StokAdi", StokAdi));
                        cmd.Parameters.Add(new SqlParameter("Fiyat", Fiyat));
                        cmd.ExecuteNonQuery();
                    }
                    cnn.Close();
                }
                return "Kayıt Başarılı";
            }
            catch (Exception ex)
            {
                return "Hata : \n" + ex.Message + "InnerException : \n" + ex.InnerException;
            }
        }

        public KampanyaTanimlari KampanyaGetir(int KmpNo)
        {
            KampanyaTanimlari tnm = new KampanyaTanimlari();
            KampanyaList list = new KampanyaList();
            try
            {
                using (SqlConnection cnn = new SqlConnection(ConnString))
                {
                    cnn.Open();
                    using (SqlCommand cmd = new SqlCommand("Select * From Kampanya Where KampanyaNo = @ID", cnn))
                    {
                        cmd.Parameters.Add(new SqlParameter("ID", KmpNo));
                        DataSet ds = new DataSet();
                        using (SqlDataAdapter adp = new SqlDataAdapter(cmd))
                        {
                            adp.Fill(ds, "AnketTanim");
                            tnm.GridList = new List<KampanyaList>();
                            tnm.KampanyaAdi = ds.Tables["AnketTanim"].Rows[0]["Adi"].ToString();
                            tnm.KampanyaTipi = Convert.ToInt32(ds.Tables["AnketTanim"].Rows[0]["Tipi"]);
                            tnm.FirmaKodu = ds.Tables["AnketTanim"].Rows[0]["FirmaKod"].ToString();
                            tnm.FirmaUnvan = ds.Tables["AnketTanim"].Rows[0]["FirmaUnvan"].ToString();
                            tnm.ID = Convert.ToInt32(ds.Tables["AnketTanim"].Rows[0]["ID"]);
                            tnm.No = Convert.ToInt32(ds.Tables["AnketTanim"].Rows[0]["KampanyaNo"]);
                            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                            {
                                list = new KampanyaList();
                                list.Adi = ds.Tables["AnketTanim"].Rows[i]["StokAdi"].ToString();
                                list.StokKod = ds.Tables["AnketTanim"].Rows[i]["StokKodu"].ToString();
                                list.Fiyat = Convert.ToDouble(ds.Tables["AnketTanim"].Rows[i]["Fiyat"]);
                                list.ID = Convert.ToInt32(ds.Tables["AnketTanim"].Rows[i]["ID"]);
                                tnm.GridList.Add(list);
                            }
                        }
                    }
                    cnn.Close();
                }
                return tnm;
            }
            catch (Exception)
            {
                return null;
            }
        }

        public void KampanyaTanimSil(int ID)
        {
            try
            {
                using (SqlConnection cnn = new SqlConnection(ConnString))
                {
                    cnn.Open();
                    using (SqlCommand cmd = new SqlCommand("Delete from Kampanya Where KampanyaNo = @ID", cnn))
                    {
                        cmd.Parameters.Add(new SqlParameter("ID", ID));
                        cmd.ExecuteNonQuery();
                    }
                    cnn.Close();
                }
            }
            catch (Exception)
            {
            }
        }

        public string KampanyaSil(int ID)
        {
            try
            {
                using (SqlConnection cnn = new SqlConnection(ConnString))
                {
                    cnn.Open();
                    using (SqlCommand cmd = new SqlCommand("Delete from Kampanya Where ID = @ID", cnn))
                    {
                        cmd.Parameters.Add(new SqlParameter("ID", ID));
                        cmd.ExecuteNonQuery();
                    }
                    cnn.Close();
                }
                return "Kayıt Silindi.";
            }
            catch (Exception ex)
            {
                return "Hata : \n" + ex.Message + "InnerException : \n" + ex.InnerException;
            }
        }


        public List<KampanyaTanimlari> KampanyaListesi()
        {
            List<KampanyaTanimlari> lst = new List<KampanyaTanimlari>();
            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Local))
            {
                SqlDataReader dr = Helper.ExecuteReader("Select KampanyaNo,FirmaKod,FirmaUnvan,Adi from Kampanya group by KampanyaNo,FirmaKod,FirmaUnvan,Adi", null);
                while (dr.Read())
                {
                    lst.Add(new KampanyaTanimlari { FirmaKodu = dr["FirmaKod"].ToString(), FirmaUnvan = dr["FirmaUnvan"].ToString(), No = (int)dr["KampanyaNo"], KampanyaAdi = dr["Adi"].ToString() });
                }
                dr.Close();
            }
            return lst;
        }


        public List<KampanyaList> StokListesi(string filtre)
        {
            if (string.IsNullOrEmpty(filtre))
            {
                filtre = "%";
            }

            List<KampanyaList> lst = new List<KampanyaList>();
            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Mikro))
            {
                SqlDataReader dr = Helper.ExecuteReader(string.Format("SELECT  sto_RECno, sto_kod, sto_isim, dbo.fn_StokSatisFiyati(sto_kod, 1, 0) AS fiyat FROM            STOKLAR where sto_kod like '{0}' or sto_isim like '{0}' ", filtre), null);
                while (dr.Read())
                {
                    lst.Add(new KampanyaList { Adi = Cevir.Parse<string>(dr["sto_isim"]), Fiyat = Cevir.Parse<double>(dr["fiyat"]), ID = Cevir.Parse<int>(dr["sto_RECno"]), StokKod = Cevir.Parse<string>(dr["sto_isim"]) });
                }
                dr.Close();
            }
            return lst;
        }


        public int MaxKampanyaNo()
        {
            int sonuc = 1;
            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Local))
            {
                SqlDataReader dr = Helper.ExecuteReader("SELECT isnull(max(KampanyaNo),1) + 1 from Kampanya", null);
                while (dr.Read())
                {
                    sonuc = dr.GetInt32(0);
                }
                dr.Close();
            }
            return sonuc;
        }


        public List<KampanyaBilgi> GenelKampanyalar()
        {
            return KampanyaBilgi(0, "");
        }

        public List<KampanyaBilgi> FirmaKampanya(string firmakodu)
        {
            return KampanyaBilgi(1, firmakodu);
        }

        List<KampanyaBilgi> KampanyaBilgi(int tip, string firmakodu)
        {
            List<KampanyaBilgi> lst = new List<KampanyaBilgi>();
            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Local))
            {
                string sql = "";
                if (tip == 1)
                {
                    sql = string.Format("SELECT        Adi, StokAdi, Fiyat, KampanyaNo  FROM            Kampanya WHERE        (Tipi = {0}) and FirmaKod='{1}'", tip, firmakodu);
                }
                else
                {
                    sql = string.Format("SELECT        Adi, StokAdi, Fiyat, KampanyaNo  FROM            Kampanya WHERE        (Tipi = {0})", tip);
                }
                SqlDataReader dr = Helper.ExecuteReader(sql, null);
                while (dr.Read())
                {
                    lst.Add(new KampanyaBilgi { Fiyat = Cevir.Parse<double>(dr["Fiyat"]), KampanyaAdi = dr["Adi"].ToString(), No = (int)dr["KampanyaNo"], StokAdi = dr["StokAdi"].ToString() });
                }
                dr.Close();
            }
            return lst;
        }

        public List<KategoriRaporu> CariKategoriRaporu(string cari)
        {
            List<KategoriRaporu> lst = new List<KategoriRaporu>();
            StringBuilder sb = new StringBuilder();
            sb.AppendLine(" SELECT        (case when DATEPART(mm, STOK_HAREKETLERI.sth_belge_tarih) =1 then 'OCAK' when DATEPART(mm, STOK_HAREKETLERI.sth_belge_tarih) =2 then 'ŞUBAT' when DATEPART(mm, STOK_HAREKETLERI.sth_belge_tarih) =3 then 'MART' when DATEPART(mm, STOK_HAREKETLERI.sth_belge_tarih) =4 then 'NİSAN' when DATEPART(mm, STOK_HAREKETLERI.sth_belge_tarih) =5 then 'MAYIS' when DATEPART(mm, STOK_HAREKETLERI.sth_belge_tarih) =6 then 'HAZİRAN'  when DATEPART(mm, STOK_HAREKETLERI.sth_belge_tarih) =7 then 'TEMMUZ' when DATEPART(mm, STOK_HAREKETLERI.sth_belge_tarih) =8 then 'AĞUSTOS' when DATEPART(mm, STOK_HAREKETLERI.sth_belge_tarih) =9 then 'EYLÜL' when DATEPART(mm, STOK_HAREKETLERI.sth_belge_tarih) =10 then 'EKİM' when DATEPART(mm, STOK_HAREKETLERI.sth_belge_tarih) =11 then 'KASIM' when DATEPART(mm, STOK_HAREKETLERI.sth_belge_tarih) =12 then 'ARALIK' END) AS Ay, STOK_KATEGORILERI.ktg_isim AS Kategori, SUM(STOK_HAREKETLERI.sth_tutar) AS Tutar,STOK_KATEGORILERI.ktg_kod as Kodu ");
            sb.AppendLine(" FROM            STOK_HAREKETLERI INNER JOIN STOKLAR ON STOK_HAREKETLERI.sth_stok_kod = STOKLAR.sto_kod INNER JOIN STOK_KATEGORILERI ON STOKLAR.sto_kategori_kodu = STOK_KATEGORILERI.ktg_kod ");
            sb.AppendLine(" WHERE        (STOK_HAREKETLERI.sth_cari_kodu = @cari) AND (STOK_HAREKETLERI.sth_tip = 1) AND (STOK_HAREKETLERI.sth_normal_iade = 0) AND (STOK_HAREKETLERI.sth_evraktip IN (1,4))  ");
            sb.AppendLine(" GROUP BY DATEPART(mm, STOK_HAREKETLERI.sth_belge_tarih), STOK_KATEGORILERI.ktg_isim,STOK_KATEGORILERI.ktg_kod ORDER BY DATEPART(mm, STOK_HAREKETLERI.sth_belge_tarih), Kategori ");
            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Mikro))
            {
                SqlDataReader dr = Helper.ExecuteReader(sb.ToString(), new SqlParameter("@cari", SqlDbType.NVarChar, 25) { Value = cari });
                while (dr.Read())
                {
                    lst.Add(new KategoriRaporu { Ciro = Cevir.Parse<double>(dr["Tutar"]), Ay = dr["Ay"].ToString(), Kategori = dr["Kategori"].ToString(), Kod = dr["Kodu"].ToString() });
                }
                dr.Close();
            }
            return lst;
        }

        public List<UrunCiro> CariSatisRaporu(string cari)
        {
            List<UrunCiro> lst = new List<UrunCiro>();
            StringBuilder sb = new StringBuilder();
            sb.AppendLine(" SELECT   top 20      STOKLAR.sto_isim AS [Stok Adı], SUM(STOK_HAREKETLERI.sth_miktar) AS Miktar, SUM(STOK_HAREKETLERI.sth_tutar) AS Tutar FROM STOK_HAREKETLERI INNER JOIN STOKLAR ON STOK_HAREKETLERI.sth_stok_kod = STOKLAR.sto_kod ");
            sb.AppendLine(" WHERE        (STOK_HAREKETLERI.sth_cari_kodu = @cari) AND (STOK_HAREKETLERI.sth_tip = 1) AND (STOK_HAREKETLERI.sth_normal_iade = 0) AND (STOK_HAREKETLERI.sth_evraktip IN (1,4)) ");
            sb.AppendLine(" GROUP BY STOKLAR.sto_isim ORDER BY Miktar DESC ");
            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Mikro))
            {
                SqlDataReader dr = Helper.ExecuteReader(sb.ToString(), new SqlParameter("@cari", SqlDbType.NVarChar, 25) { Value = cari });
                while (dr.Read())
                {
                    lst.Add(new UrunCiro { Miktar = Cevir.Parse<double>(dr["Miktar"]), UrunAdi = dr["Stok Adı"].ToString(), Tutar = Cevir.Parse<double>(dr["Tutar"]) });
                }
                dr.Close();
            }
            return lst;
        }

        public List<UrunCiro> KategoriDetayRaporu(string cari, string kategorikodu, int ay)
        {
            List<UrunCiro> lst = new List<UrunCiro>();
            StringBuilder sb = new StringBuilder();
            sb.AppendLine(" SELECT    STOKLAR.sto_isim AS [Stok Adı], SUM(STOK_HAREKETLERI.sth_miktar) AS Miktar, SUM(STOK_HAREKETLERI.sth_tutar) AS Tutar ");
            sb.AppendLine(" FROM            STOK_HAREKETLERI INNER JOIN STOKLAR ON STOK_HAREKETLERI.sth_stok_kod = STOKLAR.sto_kod ");
            sb.AppendLine(" WHERE        (STOK_HAREKETLERI.sth_cari_kodu = @cari) AND (STOK_HAREKETLERI.sth_tip = 1) AND (STOK_HAREKETLERI.sth_normal_iade = 0) AND (STOK_HAREKETLERI.sth_evraktip IN (1, 4)) AND (STOKLAR.sto_kategori_kodu =@ktgr) and (DATEPART(mm, STOK_HAREKETLERI.sth_belge_tarih)=@ay) ");
            sb.AppendLine(" GROUP BY STOKLAR.sto_isim ORDER BY Miktar DESC ");

            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Mikro))
            {
                SqlDataReader dr = Helper.ExecuteReader(sb.ToString(), new SqlParameter("@cari", SqlDbType.NVarChar, 25) { Value = cari }, new SqlParameter("@ktgr", SqlDbType.NVarChar, 25) { Value = kategorikodu }, new SqlParameter("@ay", SqlDbType.Int) { Value = ay });
                while (dr.Read())
                {
                    lst.Add(new UrunCiro { Miktar = Cevir.Parse<double>(dr["Miktar"]), UrunAdi = dr["Stok Adı"].ToString(), Tutar = Cevir.Parse<double>(dr["Tutar"]) });
                }
                dr.Close();
            }
            return lst;
        }

        public List<FirmaSonHareket> FirmayaAitSonHareket(string cari)
        {
            List<FirmaSonHareket> lst = new List<FirmaSonHareket>();
            StringBuilder sb = new StringBuilder();
            sb.AppendLine(" SELECT 'Son Görüşme' as tip,* FROM (SELECT  top 1 BitisTarihi,Konu,Yer FROM Gorusmeler WHERE (HareketTip = 0) and (FirmaKodu=@cari) ORDER BY BitisTarihi DESC) AS GR ");
            sb.AppendLine(" UNION ALL ");
            sb.AppendLine(" SELECT 'Son Randevu' as tip,* FROM (SELECT  top 1 BitisTarihi,Konu,Yer FROM Gorusmeler WHERE (HareketTip = 1) and (FirmaKodu=@cari) ORDER BY BitisTarihi DESC) AS RN ");
            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Local))
            {
                SqlDataReader dr = Helper.ExecuteReader(sb.ToString(), new SqlParameter("@cari", SqlDbType.NVarChar, 25) { Value = cari });
                while (dr.Read())
                {
                    lst.Add(new FirmaSonHareket { Konu = dr["Konu"].ToString(), Tarih = Convert.ToDateTime(dr["BitisTarihi"]), Tip = dr["tip"].ToString(), Yer = dr["Yer"].ToString() });
                }
                dr.Close();
            }
            return lst;
        }

        public string[] GetSqlQuery(string sql1, string sql2)
        {
            RaporProcess mk = new RaporProcess();
            string[] dizi = new string[2];

            if (!string.IsNullOrEmpty(sql1))
                dizi[0] = mk.GetData(sql1);

            if (!string.IsNullOrEmpty(sql2))
                dizi[1] = mk.GetData(sql2);

            return dizi;
        }


        public void RaporEkle(Rapor rpr)
        {
            StringBuilder sb = new StringBuilder();
            sb.AppendLine(" if exists(select * from Raporlar where ID=@ID ) ");
            sb.AppendLine(" update Raporlar set Adi=@Adi,Tipi=@Tipi,ChartTipi=@ChartTipi,GridSorgu=@GridSorgu,ChartSorgu=@ChartSorgu,ChartAlan=@ChartAlan,ChartDeger=@ChartDeger where (ID=@ID ) else  ");
            sb.AppendLine(" insert into Raporlar values (@Adi,@Tipi,@ChartTipi,@GridSorgu,@ChartSorgu,@ChartAlan,@ChartDeger) ");

            using (SqlConnection cn = new SqlConnection(WebConfigurationManager.ConnectionStrings["localdb"].ConnectionString))
            {
                cn.Open();
                using (SqlCommand cmd = new SqlCommand(sb.ToString(), cn))
                {
                    cmd.Parameters.Add("@ID", System.Data.SqlDbType.Int);
                    cmd.Parameters.Add("@Adi", System.Data.SqlDbType.VarChar, 50);
                    cmd.Parameters.Add("@Tipi", System.Data.SqlDbType.TinyInt);
                    cmd.Parameters.Add("@ChartTipi", System.Data.SqlDbType.TinyInt);
                    cmd.Parameters.Add("@GridSorgu", System.Data.SqlDbType.VarChar);
                    cmd.Parameters.Add("@ChartSorgu", System.Data.SqlDbType.VarChar);
                    cmd.Parameters.Add("@ChartAlan", System.Data.SqlDbType.VarChar, 50);
                    cmd.Parameters.Add("@ChartDeger", System.Data.SqlDbType.VarChar, 50);
                    cmd.Parameters["@ID"].Value = rpr.ID;
                    cmd.Parameters["@Adi"].Value = rpr.Adi;
                    cmd.Parameters["@Tipi"].Value = rpr.Tipi;
                    cmd.Parameters["@ChartTipi"].Value = rpr.ChartTipi;
                    cmd.Parameters["@GridSorgu"].Value = rpr.GridSorgu;
                    cmd.Parameters["@ChartSorgu"].Value = rpr.ChartSorgu;
                    cmd.Parameters["@ChartAlan"].Value = rpr.ChartAlan;
                    cmd.Parameters["@ChartDeger"].Value = rpr.ChartDeger;

                    cmd.ExecuteNonQuery();
                }
                cn.Close();
            }
        }

        public void RaporSil(Rapor rpr)
        {
            using (SqlConnection cn = new SqlConnection(WebConfigurationManager.ConnectionStrings["localdb"].ConnectionString))
            {
                cn.Open();
                using (SqlCommand cmd = new SqlCommand("delete from Raporlar where ID=@ID", cn))
                {
                    cmd.Parameters.Add("@ID", System.Data.SqlDbType.Int);
                    cmd.Parameters["@ID"].Value = rpr.ID;
                    cmd.ExecuteNonQuery();
                }
                cn.Close();
            }
        }


        public List<Rapor> RaporListele()
        {
            List<Rapor> raporlar = new List<Rapor>();
            using (SqlConnection cn = new SqlConnection(WebConfigurationManager.ConnectionStrings["localdb"].ConnectionString))
            {
                cn.Open();
                using (SqlCommand cmd = new SqlCommand("select * from Raporlar", cn))
                {
                    SqlDataReader rd = cmd.ExecuteReader();
                    while (rd.Read())
                    {
                        Rapor rpr = new Rapor();
                        rpr.Adi = Cevir.Parse<string>(rd["Adi"]);
                        rpr.ChartAlan = Cevir.Parse<string>(rd["ChartAlan"]);
                        rpr.ChartDeger = Cevir.Parse<string>(rd["ChartDeger"]);
                        rpr.ChartSorgu = Cevir.Parse<string>(rd["ChartSorgu"]);
                        rpr.ChartTipi = Cevir.Parse<byte>(rd["ChartTipi"]);
                        rpr.GridSorgu = Cevir.Parse<string>(rd["GridSorgu"]);
                        rpr.Tipi = Cevir.Parse<byte>(rd["Tipi"]);
                        rpr.ID = Cevir.Parse<int>(rd["ID"]);
                        raporlar.Add(rpr);
                    }
                }
                cn.Close();
            }
            return raporlar;
        }

        public List<CariBakiye> CariBakiyeRaporu(string cari)
        {
            List<CariBakiye> lst = new List<CariBakiye>();
            StringBuilder sb = new StringBuilder();
            sb.AppendLine(" select 'Bakiye',dbo.fn_CariHesapAnaDovizBakiye(N'', 0, @cari, '', N'', NULL, NULL, NULL, 0) AS Bakiye union all ");
            sb.AppendLine(" SELECT        TOP (5) 'Satış fat. ' + CONVERT(varchar(20), cha_belge_tarih, 103)  + ' / ' + cha_evrakno_seri + ' - ' + CAST(cha_evrakno_sira AS varchar) AS aciklama, cha_meblag FROM            CARI_HESAP_HAREKETLERI ");
            sb.AppendLine(" WHERE        (cha_kod = @cari) AND (cha_evrak_tip = 63) ");

            using (QueryHelper Helper = new QueryHelper(ProgramTipi.Mikro))
            {
                SqlDataReader dr = Helper.ExecuteReader(sb.ToString(), new SqlParameter("@cari", SqlDbType.NVarChar, 25) { Value = cari });
                while (dr.Read())
                {
                    lst.Add(new CariBakiye { Bakiye = Cevir.Parse<double>(dr[1]), SorumlulukMerkezi = dr[0].ToString() });
                }
                dr.Close();
            }
            return lst;
        }
    }
}
